﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ARR.Entities;

namespace ARR.Services
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ISpacesService" in both code and config file together.
    [ServiceContract]
    public interface ISpacesService
    {
        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        List<Space> GetAllSpaces(int rangeReviewId, bool lazyLoad);
        
        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        Space GetSpaceById(int spaceId);
        
        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        void SaveSpaces(List<Space> spaces);
        
        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        List<Planogram> GetAllPlanograms(int rangeReviewId, bool lazyLoad);
        
        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        Planogram GetPlanogramById(int planogramId);

        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        void SavePlanograms(List<Planogram> planograms);

        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        List<TempSpace> GetAllTempSpaces(bool lazyLoad);

        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        void SaveTempSpaces(List<TempSpace> spaces);

        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        List<TempSpace> GetTempSpacesByIds(IEnumerable<int> listIds);

        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        List<PlanogramLocation> GetAllPlanogramLocations();

        [OperationContract]
        [FaultContract(typeof(ARRExceptionDetail))]
        byte[] GenerateFloorPlan(int rangeReviewId);
    }
}
